/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.model;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Santos
 */
public class CronogramaAtualizacaoModel implements Comparable<CronogramaAtualizacaoModel> {

    private ClienteModel clienteModel;
    private ColaboradorModel colaboradorModel;
    private VersaoModel versaoModel;
    private String dataAgendada;
    private String observacao;
    private String dataConclusao;
    private char localRemota;
    private String dataCancelamento;
    private String motivoCancelamento;

    /*Dados de conexão com o ERP*/
    private String hostERP;
    private String nomeBancoDadosERP;
    private String portaERP;
    private String usuarioERP;
    private String senhaERP;

    /*Dadis de conexão com o Frente de Loja*/
    private String hostFrenteLoja;
    /**
     * nome do banco de dados que está as configurações de versão
     */
    private String nomeBancoFrenteLojaSRV;
    /**
     * nome do banco de dados que está os dados da unidade
     */
    private String nomeBancoFrenteLojaECF;
    private String portaFrenteLoja;
    private String usuarioFrenteLoja;
    private String senhaFrenteLoja;
    private String nomeTela;

    /*Variaveis para geração de relatórios*/
    private char tipoPeriodoRelatorio;
    private String dataPeriodoInicioRelatorio;
    private String dataPeriodoFimRelatorio;
    private char situacaoRelatorio;
    private ColaboradorModel colaboradorModelRelatorio;
    private VersaoModel versaoModelRelatorio;

    public VersaoModel getVersaoModelRelatorio() {
        if (versaoModelRelatorio == null) {
            versaoModelRelatorio = new VersaoModel();
        }
        return versaoModelRelatorio;
    }

    public void setVersaoModelRelatorio(VersaoModel versaoModelRelatorio) {
        this.versaoModelRelatorio = versaoModelRelatorio;
    }

    public char getTipoPeriodoRelatorio() {
        return tipoPeriodoRelatorio;
    }

    public void setTipoPeriodoRelatorio(char tipoPeriodoRelatorio) {
        this.tipoPeriodoRelatorio = tipoPeriodoRelatorio;
    }

    public String getDataPeriodoInicioRelatorio() {
        return dataPeriodoInicioRelatorio;
    }

    public void setDataPeriodoInicioRelatorio(String dataPeriodoInicioRelatorio) {
        this.dataPeriodoInicioRelatorio = dataPeriodoInicioRelatorio;
    }

    public String getDataPeriodoFimRelatorio() {
        return dataPeriodoFimRelatorio;
    }

    public void setDataPeriodoFimRelatorio(String dataPeriodoFimRelatorio) {
        this.dataPeriodoFimRelatorio = dataPeriodoFimRelatorio;
    }

    public char getSituacaoRelatorio() {
        return situacaoRelatorio;
    }

    public void setSituacaoRelatorio(char situacaoRelatorio) {
        this.situacaoRelatorio = situacaoRelatorio;
    }

    public ColaboradorModel getColaboradorModelRelatorio() {
        if (colaboradorModelRelatorio == null) {
            colaboradorModelRelatorio = new ColaboradorModel();
        }
        return colaboradorModelRelatorio;
    }

    public void setColaboradorModelRelatorio(ColaboradorModel colaboradorModelRelatorio) {
        this.colaboradorModelRelatorio = colaboradorModelRelatorio;
    }

    public String getNomeTela() {
        return nomeTela;
    }

    public void setNomeTela(String nomeTela) {
        this.nomeTela = nomeTela;
    }

    public String getHostFrenteLoja() {
        return hostFrenteLoja;
    }

    public void setHostFrenteLoja(String hostFrenteLoja) {
        this.hostFrenteLoja = hostFrenteLoja;
    }

    public String getNomeBancoFrenteLojaSRV() {
        return nomeBancoFrenteLojaSRV;
    }

    public void setNomeBancoFrenteLojaSRV(String nomeBancoFrenteLojaSRV) {
        this.nomeBancoFrenteLojaSRV = nomeBancoFrenteLojaSRV;
    }

    public String getNomeBancoFrenteLojaECF() {
        return nomeBancoFrenteLojaECF;
    }

    public void setNomeBancoFrenteLojaECF(String nomeBancoFrenteLojaECF) {
        this.nomeBancoFrenteLojaECF = nomeBancoFrenteLojaECF;
    }

    public String getPortaFrenteLoja() {
        return portaFrenteLoja;
    }

    public void setPortaFrenteLoja(String portaFrenteLoja) {
        this.portaFrenteLoja = portaFrenteLoja;
    }

    public String getUsuarioFrenteLoja() {
        return usuarioFrenteLoja;
    }

    public void setUsuarioFrenteLoja(String usuarioFrenteLoja) {
        this.usuarioFrenteLoja = usuarioFrenteLoja;
    }

    public String getSenhaFrenteLoja() {
        return senhaFrenteLoja;
    }

    public void setSenhaFrenteLoja(String senhaFrenteLoja) {
        this.senhaFrenteLoja = senhaFrenteLoja;
    }

    public String getHostERP() {
        return hostERP;
    }

    public void setHostERP(String hostERP) {
        this.hostERP = hostERP;
    }

    public String getNomeBancoDadosERP() {
        return nomeBancoDadosERP;
    }

    public void setNomeBancoDadosERP(String nomeBancoDadosERP) {
        this.nomeBancoDadosERP = nomeBancoDadosERP;
    }

    public String getPortaERP() {
        return portaERP;
    }

    public void setPortaERP(String portaERP) {
        this.portaERP = portaERP;
    }

    public String getUsuarioERP() {
        return usuarioERP;
    }

    public void setUsuarioERP(String usuarioERP) {
        this.usuarioERP = usuarioERP;
    }

    public String getSenhaERP() {
        return senhaERP;
    }

    public void setSenhaERP(String senhaERP) {
        this.senhaERP = senhaERP;
    }

    public ClienteModel getClienteModel() {
        if (clienteModel == null) {
            clienteModel = new ClienteModel();
        }
        return clienteModel;
    }

    public void setClienteModel(ClienteModel clienteModel) {
        this.clienteModel = clienteModel;
    }

    public ColaboradorModel getColaboradorModel() {
        if (colaboradorModel == null) {
            colaboradorModel = new ColaboradorModel();
        }
        return colaboradorModel;
    }

    public void setColaboradorModel(ColaboradorModel colaboradorModel) {
        this.colaboradorModel = colaboradorModel;
    }

    public VersaoModel getVersaoModel() {
        if (versaoModel == null) {
            versaoModel = new VersaoModel();
        }
        return versaoModel;
    }

    public void setVersaoModel(VersaoModel versaoModel) {
        this.versaoModel = versaoModel;
    }

    public String getDataAgendada() {
        return dataAgendada;
    }

    public void setDataAgendada(String dataAgendada) {
        this.dataAgendada = dataAgendada;
    }

    public String getObservacao() {
        return observacao;
    }

    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }

    public String getDataConclusao() {
        return dataConclusao;
    }

    public void setDataConclusao(String dataConclusao) {
        this.dataConclusao = dataConclusao;
    }

    public char getLocalRemota() {
        return localRemota;
    }

    public void setLocalRemota(char localRemota) {
        this.localRemota = localRemota;
    }

    public String getDataCancelamento() {
        return dataCancelamento;
    }

    public void setDataCancelamento(String dataCancelamento) {
        this.dataCancelamento = dataCancelamento;
    }

    public String getMotivoCancelamento() {
        return motivoCancelamento;
    }

    public void setMotivoCancelamento(String motivoCancelamento) {
        this.motivoCancelamento = motivoCancelamento;
    }

    /**
     * Ação do script SQL na execução do programa
     */
    private String actionScript;
    /**
     * Modelo de um comboBox para utiliza nas telas
     */
    private DefaultComboBoxModel modelComboBox;
    /**
     * Modelo de uma table para utilizar nas telas
     */
    private DefaultTableModel modelTable;
    /**
     * Lista contendo os dados relacionados da consulta feita na tabela setor.
     * Mas é necessário rever o nome dessa variável, sugestão: lista+Classe
     */
    private List<CronogramaAtualizacaoModel> lista;
    /**
     * Variavel responsável por recepcionar dados extraidos das consultas
     * executadas na banco de dados
     */
    private ResultSet resultSet;

    public String getActionScript() {
        return actionScript;
    }

    public void setActionScript(String actionScript) {
        this.actionScript = actionScript;
    }

    public DefaultComboBoxModel getModelComboBox() {
        if (modelComboBox == null) {
            modelComboBox = new DefaultComboBoxModel();
            modelComboBox.addElement("ESCOLHER");
        }
        return modelComboBox;
    }

    public void setModelComboBox(DefaultComboBoxModel modelComboBox) {
        this.modelComboBox = modelComboBox;
    }

    public DefaultTableModel getModelTable() {
        if (modelTable == null) {
            modelTable = new DefaultTableModel();
            modelTable.addColumn("Cliente");
            modelTable.addColumn("Técnico");
            modelTable.addColumn("Produto");
            modelTable.addColumn("Versao");
            modelTable.addColumn("Data Agendada");
            modelTable.addColumn("Observacao");
            modelTable.addColumn("Remota/Local");
            modelTable.addColumn("Data Cancelamento");
            modelTable.addColumn("Motivo Cancelamento");
            modelTable.addColumn("Data Conclusão");
        }
        return modelTable;
    }

    public void setModelTable(DefaultTableModel modelTable) {
        this.modelTable = modelTable;
    }

    public List<CronogramaAtualizacaoModel> getLista() {
        if (lista == null) {
            lista = new ArrayList<>();
        }
        return lista;
    }

    public void setLista(List<CronogramaAtualizacaoModel> listaProduto) {
        this.lista = listaProduto;
    }

    public ResultSet getResultSet() {
        return resultSet;
    }

    public void setResultSet(ResultSet resultSet) {
        this.resultSet = resultSet;
    }

    public CronogramaAtualizacaoModel getProduto(int cliente, int versao) {
        CronogramaAtualizacaoModel model = null;
        for (CronogramaAtualizacaoModel produtoModel : getLista()) {
            if (produtoModel.getClienteModel().getCodigo() == cliente
                    && produtoModel.getVersaoModel().getCodigo() == versao) {
                model = produtoModel;
                break;
            }
        }
        return model;
    }

    /**
     * Metodo responsável pelo ordenação dos dados
     *
     * @param cronogramaAtualizaModel
     * @return
     */
    @Override
    public int compareTo(CronogramaAtualizacaoModel cronogramaAtualizaModel) {
        return cronogramaAtualizaModel.getDataAgendada().compareToIgnoreCase(this.getDataAgendada());
    }
}
